package com.taijihuabao.modules.mapper;

import com.taijihuabao.modules.entity.CheckInEntity;
import com.taijihuabao.modules.model.checkin.vo.CheckInExportVO;
import com.taijihuabao.modules.model.checkin.vo.CheckInListVO;
import com.taijihuabao.modules.model.checkin.dto.CheckInListDTO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 考勤管理
 *
 * @author changhui.tu
 */
public interface CheckInMapper {

    /**
     * 列表
     *
     * @param listDTO
     * @return
     */
    List<CheckInListVO> selCheckInList(CheckInListDTO listDTO);

    /**
     * 信息
     *
     * @param id
     * @return
     */
    CheckInListVO selCheckInInfo(Long id);

    /**
     * 根据用户id查询今日打卡记录
     *
     * @param checkInEntity
     * @return
     */
    List<CheckInEntity> selCheckInByUid(CheckInEntity checkInEntity);

    /**
     * 根据用户id，打卡种类查询今日打卡记录
     *
     * @param checkInEntity
     * @return
     */
    List<CheckInEntity> selCheckInByUidAndClockType(CheckInEntity checkInEntity);

    /**
     * 考勤打卡
     *
     * @param checkWorkEntity
     */
    void attendanceClock(CheckInEntity checkWorkEntity);

    /**
     * 更新考勤打卡(逻辑删除)
     *
     * @param checkInEntity
     */
    void updCheckInClock(CheckInEntity checkInEntity);

    /**
     * 导出数据
     *
     * @param checkInEntity
     * @return
     */
    List<CheckInExportVO> export(CheckInEntity checkInEntity);

    /**
     * 按月导出
     *
     * @param year
     * @param month
     * @return
     */
    List<CheckInExportVO> exportForMonth(@Param("year") Integer year, @Param("month") Integer month);

    /**
     * 按周导出
     *
     * @param beginTime
     * @param endTime
     * @return
     */
    List<CheckInExportVO> exportForWeek(@Param("beginTime") String beginTime, @Param("endTime") String endTime);

}
